using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Konst3d.Efficiency.Suite
{
    public enum MonitorType
    {
        Monitor,
        Counter,
        Commandment
    }

    public interface IMonitor: IIdentifiable<int>
    {
        string Title
        {
            get;
            set;
        }

        string Description
        {
            get;
            set;
        }

        MonitorType Type
        {
            get;
        }

        bool Active
        {
            get;
            set;
        }

        DateTime Created
        {
            get;
        }

        IMonitoringStatistic Statistic
        {
            get;
        }

        IMonitoringActiveDays ActiveDays
        {
            get;
        }

        double GetAverageValue();
        double GetAverageValue(DateTime start, DateTime end);

        double GetSummaryValue();
        double GetSummaryValue(DateTime start, DateTime end);

        int GetCommandmentViolationsCount();
        int GetCommandmentViolationsCount(DateTime start, DateTime end);
    }
}
